home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 May / EnigmA AMIGA RUN 18 (1997)(G.R. Edizioni)(IT)[!][issue 1997-05][EAR-CD II].iso / earcd / misc / emu / arosdev.lha / AROS / rom / exec / allocvec.c < prev    next >
C/C++ Source or Header  |  1997-01-09  |  2KB  |  104 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: allocvec.c,v 1.9 1997/01/01 03:46:05 ldp Exp $
  4.     $Log: allocvec.c,v $
  5.     Revision 1.9  1997/01/01 03:46:05  ldp
  6.     Committed Amiga native (support) code
  7.  
  8.     Changed clib to proto
  9.  
  10.     Revision 1.8  1996/12/10 13:51:38  aros
  11.     Moved all #include's in the first column so makedepend can see it.
  12.  
  13.     Revision 1.7  1996/10/24 15:50:45  aros
  14.     Use the official AROS macros over the __AROS versions.
  15.  
  16.     Revision 1.6  1996/10/23 14:13:43  aros
  17.     Use AROS_ALIGN() to align pointers
  18.  
  19.     Revision 1.5  1996/10/19 17:07:24  aros
  20.     Include <aros/machine.h> instead of machine.h
  21.  
  22.     Revision 1.4  1996/08/13 13:55:58  digulla
  23.     Replaced AROS_LA by AROS_LHA
  24.     Replaced some AROS_LH*I by AROS_LH*
  25.     Sorted and added includes
  26.  
  27.     Revision 1.3  1996/08/01 17:41:05  digulla
  28.     Added standard header for all files
  29.  
  30.     Desc:
  31.     Lang:
  32. */
  33. #include "exec_intern.h"
  34. #include <aros/libcall.h>
  35. #include <aros/machine.h>
  36. #include "memory.h"
  37. #include <proto/exec.h>
  38.  
  39. /*****************************************************************************
  40.  
  41.     NAME */
  42.  
  43.     AROS_LH2(APTR, AllocVec,
  44.  
  45. /*  SYNOPSIS */
  46.     AROS_LHA(ULONG, byteSize,     D0),
  47.     AROS_LHA(ULONG, requirements, D1),
  48.  
  49. /*  LOCATION */
  50.     struct ExecBase *, SysBase, 114, Exec)
  51.  
  52. /*  FUNCTION
  53.     Allocate some memory from the sytem memory pool with the given
  54.     requirements and without the need to memorize the actual size
  55.     of the block.
  56.  
  57.     INPUTS
  58.     byteSize     - Number of bytes you want to get
  59.     requirements - Type of memory
  60.  
  61.     RESULT
  62.     A pointer to the number of bytes you wanted or NULL if the memory
  63.     couldn't be allocated
  64.  
  65.     NOTES
  66.  
  67.     EXAMPLE
  68.  
  69.     BUGS
  70.  
  71.     SEE ALSO
  72.     FreeVec()
  73.  
  74.     INTERNALS
  75.  
  76.     HISTORY
  77.     8-10-95    created by m. fleischer
  78.        16-10-95    increased portability
  79.  
  80. ******************************************************************************/
  81. {
  82.     AROS_LIBFUNC_INIT
  83.  
  84.     UBYTE *ret;
  85.  
  86.     /* Add room for stored size. */
  87.     byteSize+=AROS_ALIGN(sizeof(ULONG));
  88.  
  89.     /* Get the memory. */
  90.     ret=(UBYTE *)AllocMem(byteSize,requirements);
  91.  
  92.     /* If there's not enough memory left return immediately. */
  93.     if(ret==NULL)
  94.     return NULL;
  95.  
  96.     /* Store size */
  97.     *(ULONG *)ret=byteSize;
  98.  
  99.     /* return free space */
  100.     return ret+AROS_ALIGN(sizeof(ULONG));
  101.     AROS_LIBFUNC_EXIT
  102. } /* AllocVec */
  103.  
  104.